package com.example.mydemo;

import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;

import com.example.mydemo.bean.Item;

import java.util.List;// 自定义适配器

public class MyAdapter extends BaseAdapter {
    private final List<Item> itemList;
    private final ShowListActivity context;

    public MyAdapter(ShowListActivity context, List<Item> itemList) {
        this.context = context;
        this.itemList = itemList;
    }

    @Override
    public int getCount() {
        return itemList.size();
    }

    @Override
    public Object getItem(int position) {
        return itemList.get(position);
    }

    @Override
    public long getItemId(int position) {
        return position;
    }

    @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        MyViewGroup group;

        if (convertView == null) {
            // 从上下文（context）中获取系统服务 "LAYOUT_INFLATER_SERVICE"，并将其转换为 LayoutInflater 类型。
            // LayoutInflater 是一个用于将 XML 布局文件解析成对应的 View 对象的类。
            LayoutInflater inflater = (LayoutInflater) context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            // 使用前面获取到的 LayoutInflater 实例，将指定的布局资源 R.layout.list_item 解析成相应的 View 对象。
            // 这里的parent'参数表示该新视图最终会被附加到哪个父视图上,这里附加到父视图为null
            convertView = inflater.inflate(R.layout.list_item, null);
            //设置viewgoupr
            group = new MyViewGroup();
            group.timeView = convertView.findViewById(R.id.time);
            group.numberView = convertView.findViewById(R.id.username);
            group.contentView = convertView.findViewById(R.id.message);

            convertView.setTag(group);
        } else {
            // 复用
            group = (MyViewGroup) convertView.getTag();
        }
        // 获取当前位置的数据
        Item currentItem = itemList.get(position);
        group.timeView.setText(currentItem.getTime());
        group.numberView.setText(currentItem.getNumber());
        group.contentView.setText(currentItem.getContent());
        return convertView;
    }

    static public class MyViewGroup {
        TextView timeView;
        TextView numberView;
        TextView contentView;

    }
}

